package modelo.obstaculos;

import compartido.EntidadAutomatica;

import modelo.comportamiento.AccionRecomendada;
import modelo.escenario.IElemento;
import modelo.geometria.Vector;
import modelo.geometria.Figura;
import modelo.repositorios.RepositorioAcciones;
import modelo.vehiculos.Vehiculo;

public abstract class Obstaculo extends EntidadAutomatica implements IElemento{

	protected Figura cuerpo;
	
	protected Obstaculo (Figura cuerpo) {
		this.cuerpo = cuerpo;
	}
	
	protected Obstaculo(String identificador, Figura cuerpo) {
		super(identificador);
		this.cuerpo = cuerpo;
	}
	
	public Vector getPosicion() {
		return cuerpo.getCentro();
	}
	
	public Figura getCuerpo() {
		return cuerpo;
	}
	
	public abstract String generarHashcode(Vehiculo vehiculo);
	
	public AccionRecomendada analizarSituacion(Vehiculo vehiculo) {
		String clave = generarHashcode(vehiculo);
		return RepositorioAcciones.getAccionRecomendada(clave);
	}
	
}
